package com.wg.db.repository.log;

import java.util.List;

import com.wg.db.repository.code.MySqlAsyncListRepository;

/**
 * 日志数据访问基类，负责日志的异步批量存储
 *
 * @author 少爷123
 */
public abstract class BaseLogRepository<T> {
    private final MySqlAsyncListRepository<Long, T> asyncRepository;

    public BaseLogRepository(Class<T> entityClass) {
        this.asyncRepository = new MySqlAsyncListRepository<>(entityClass);
    }

    /**
     * 插入单个日志实体（异步处理）
     *
     * @param entity 日志实体
     */
    public void insert(T entity) {
        asyncRepository.insert(entity);
    }

    /**
     * 批量插入日志实体（异步处理）
     *
     * @param entities 日志实体列表
     */
    public void batchInsert(List<T> entities) {
        asyncRepository.batchInsert(entities);
    }

    /**
     * 获取待处理的实体数量
     *
     * @return 待处理数量
     */
    public int getPendingCount() {
        return asyncRepository.pendingSize();
    }

    /**
     * 关闭资源时刷新剩余待处理实体
     */
    public void shutdownAndFlush() {
        asyncRepository.close();
    }
}